// craco.config.js 用于扩展webpack配置
const path = require('path');
const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer');

module.exports = {
    // webpack配置
    webpack: {
        // 配置别名
        alias: {
            // 约定：用@表示src目录
            '@': path.resolve(__dirname, 'src'),
        },
        // 配置 webpack
        configure: (webpackConfig, { env, paths }) => {
            // 生产环境配置
            if (env === 'production') {
                // 添加打包分析插件
                webpackConfig.plugins.push(
                    new BundleAnalyzerPlugin({
                        analyzerMode: 'static',
                        openAnalyzer: false,
                        reportFilename: 'bundle-report.html'
                    })
                );
            }
            return webpackConfig;
        },
    },
    // 开发服务器配置
    devServer: {
        port: 9002,                    // 开发服务器端口
        hot: true,                     // 启用热更新
        historyApiFallback: true,      // 支持 HTML5 History API
        compress: true,                // 启用 gzip 压缩
        client: {
            overlay: {                 // 当出现编译错误时，在浏览器中显示全屏覆盖
                errors: true,
                warnings: false
            },
            progress: true,            // 在浏览器中显示编译进度
            logging: 'info'            // 日志级别：'none' | 'error' | 'warn' | 'info' | 'log' | 'verbose'
        },
        static: {                      // 静态文件配置
            directory: path.join(__dirname, 'public'),
            publicPath: '/',
            watch: true                // 监听静态文件变化
        },
    },
};

